SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE FUNCTION [dbo].[fnObtenerValorDeParametro] (@Nombre VARCHAR(50), @Fecha DATETIME)  
RETURNS VARCHAR(50) AS  
BEGIN 

	DECLARE @Valor VARCHAR(50)

	-- Se obtiene el valor de la nueva tabla Tb_ParametrosValores
	SELECT  TOP 1 @Valor = Valor
	FROM tb_Parametros P
	INNER JOIN Tb_ParametrosValores PV ON  P.IdParametro = PV.IdParametro
	WHERE (@Fecha <= PV.ValidezHasta AND PV.ValidezHasta IS NOT NULL) AND Parametro = @Nombre
	ORDER BY PV.ValidezHasta 

	IF @Valor IS NULL
	Begin
		SELECT   @Valor = Valor
		FROM tb_Parametros P
		INNER JOIN Tb_ParametrosValores PV ON  P.IdParametro = PV.IdParametro
		WHERE PV.ValidezHasta IS  NULL AND Parametro = @Nombre
	End
	-- Si no existe el valor se obtiene de tb_Parametros.
	IF @Valor IS NULL
		SELECT @Valor = Valor1 FROM tb_Parametros WHERE Parametro = @Nombre


	RETURN(@Valor)

END
GO
GRANT EXECUTE ON  [dbo].[fnObtenerValorDeParametro] TO [SoloVer]
GO
